package com.dhl.rabbitmq.two;

import com.dhl.rabbitmq.utils.RabbitUtils;
import com.rabbitmq.client.Channel;

import java.util.Scanner;

/**
 * 生产者
 * 发送大量消息给多个消费者，消费者轮询获取消息，不重复测试
 * @title: Task01
 * @Author danghailiang
 * @Date: 2022/6/10 8:07
 * @Version 1.0
 */
public class Task01 {

    /**
     * 队列名称
     */
    public static final String QUEUE_NAME = "workThread";

    public static void main(String[] args) throws Exception {
        Channel channel = RabbitUtils.getChannel();
        /**
         * 生成一个队列
         * 1. 队列名称
         * 2. durable:队列里面的消失是否持久化(磁盘)
         * 3. exclusive:该队列是否只供一个消费者进行消费，是否进行消息共享，true可以多个消费者消费
         * 4. autoDelete:否是自动删除，最后一个消费者端断开连接以后，该队列是否自动删除，true自动删除，false不自动删除
         * 5. 其他参数，暂时不用
         */
        channel.queueDeclare(
                QUEUE_NAME,
                false,
                false,
                false,
                null
        );
        // 从控制台接收消息今夕发送
        Scanner scanner = new Scanner(System.in);
        // 循环发送
        while (scanner.hasNext()){
            String message = scanner.nextLine();
            /**
             * 发送一个消费者
             * 1. 发送到哪个交换机
             * 2. 路由的Key是哪个，本次是队列名称
             * 3. 其他参数信息，暂时为null
             * 4. 发送的消息的消息体(二进制消息)
             */
            channel.basicPublish("",QUEUE_NAME,null,message.getBytes());
            System.out.println("消息发送完成");
        }
    }
}
